|
![]() |
Registriert seit: 4. Jun 2006
Ein kleines Tutorial für Anfänger in Delphi
Kontrollstrukturen und Schleifen Was sind Kontrollstrukturen und Schleifen? Sie sind ein wichtiger Teil der Programmiersprache Delphi / Pascal. Mithilfe dieser Strukturen und Schleifen kann man viele wichtige Sachen erledigen wie z.B.:
Also, los geht es: Die If-Then-Struktur Mithilfe dieser Struktur kann mal Prüfen, ob eine Aussage wahr ist. Dies ist zum Beispiel nützlich, wenn man prüfen möchte, ob der Benutzer bestimme Einstellungen getätigt hat. Man nutzt diese Struktur folgendermaßen: Syntax:
Code:
[equote:1cfd604b19="Deutsch:"]Ist die Bedingung [Bedingung] wahr (true), führe den Anweisungsblock aus
if [Bedingung] then
[Aktion, die ausgeführt wird wenn die Bedingung wahr (true) ist] [/equote:1cfd604b19] Beispiel:
Delphi-Quellcode:
[equote:1cfd604b19="Erklärung:"]Hier wird eine Meldung herausgegeben, falls CheckBox1 angewählt ist
if CheckBox1.Checked then
ShowMessage('Die CheckBox1 wurde angewählt!'); [/equote:1cfd604b19] Will man einen bestimmten Wert prüfen (z.B. ob zwei Zahlen gleich sind): Beispiel:
Delphi-Quellcode:
[equote:1cfd604b19="Erklärung:"]Wenn man zwei Werte vergleichen will, macht man dies mit dem =-Operator.
if DemoString = 'Hallo du!' then
Anweisung; So wird geprüft, ob die linke Seite mit der rechten Seite übereinstimmt [/equote:1cfd604b19] Verglichen werden kann eigentlich alles, zu beachten ist nur, dass beide Seiten den gleichen Typ ( z.B. Integer, String... ) haben sollten. Andere Möglichkeiten mit IF [equote:1cfd604b19="Andere Operatoren"]Natürlich gibt es nicht nur den =-Operator, es gibt noch mehr:
[/equote:1cfd604b19] Verknüpfen von Bedingungen Natürlich kann man nicht nur eine Bedingung verwenden. Mann kann sie auch miteinander verknüpfen. AND Mit 'and' verknüpft man zwei oder mehr Bedingungen. Dabei müssen alle Bedingungen erfüllt sein. [equote:1cfd604b19="Beispiel:"]
Delphi-Quellcode:
[equote:1cfd604b19="Erklärung"]Hier wird geprüft, ob die Zahl zwischen 1 und 10 liegt und ggf. eine Meldung ausgegeben
if (zahl > 0) and (zahl < 10) then
ShowMessage('Deine Zahl liegt zwischen 1 und 10'); [/equote:1cfd604b19] OR Mit 'or' verknüpft man auch zwei Bedingungen, allerdings muss nur eine davon erfüllt sein. [equote:1cfd604b19="Beispiel:"]
Delphi-Quellcode:
[equote:1cfd604b19="Erklärung:"]Hier wird geprüft, ob die Zahl außerhalb von 1-10 liegt und ggf. eine Meldung herausgegeben.
if (zahl < 1) or (zahl > 10) then
ShowMessage('Deine Zahl liegt außerhalb von 1-10!'); [/equote:1cfd604b19] Wie auch immer man es macht, die Bedingungen müssen dann immer eingeklammert sein. Hinweise:
Tipps:
![]() Die If-Then-Else-Struktur Die If-Then-Else-Struktur gleicht der If-Then-Struktur, allerdings wird bei dieser Struktur, falls die Bedingung falsch (false) ist, ein anderer Anweisungs-Block / eine andere Anweisung ausgeführt Diese Struktur wird folgendermaßen benutzt: Syntax:
Code:
[equote:1cfd604b19="Deutsch"]Ist die Bedingung [Bedingung] wahr (true), führe den Anweisungsblock aus. Ist sie nicht wahr, führe den zweiten Anweisungsblock aus
if [Bedingung] then
[Aktion, die ausgeführt wird, wenn die Bedingung wahr (true) ist] else [Aktion, die ausgeführt wird, wenn die Bedingung falsch (false) ist] [/equote:1cfd604b19] Beispiel:
Delphi-Quellcode:
[equote:1cfd604b19="Erklärung:"]Wenn die CheckBox1 gewählt ist, wird das Formular Forum2 angezeigt. Falls nicht wird das Formular Form3 angezeigt
if CheckBox1.Checked then
Form2.Show else Form3.Show; [/equote:1cfd604b19] Auch hier gilt: Ist die Aktion länger als eine Anweisung, muss der Anweisungs-Block in Begin & End gefasst werden. Die Tipps von oben gelten auch hier. Hinweis: Vor dem 'else' darf nie ein Semikolon stehen! Es ist sehr Umständlich, wenn man z.B. eine Zahl hätte, und abhängig davon eine spezielle Antwort geben muss. Normalerweise würde man dieses Problem so lösen:
Delphi-Quellcode:
if zahl = 0 then
Antwort0; if zahl = 1 then Antowrt1; if zahl = 2 then Antwort2; if zahl = 3 then Antwort3; if zahl = 4 then Antwort4; if zahl = 5 then Antwort5; Dafür gibt es aber auch eine elegante Lösung: Die Case-Of-Struktur Die Case-Of-Struktur sieht aus wie eine Aufzählung, das ist sie im Prinzip auch. Sie enthält eine Liste aller Werte, gefolgt von einem Doppelpunkt und der Aktion, die jeweils ausgeführt werden soll. Syntax:
Code:
[equote:1cfd604b19="Deutsch:"]Die Case-Of-Struktur sucht sich den Wert einer Variable und führt entsprechend eine Aktion aus.
case [Variable] of
0: [Anweisung1] 1: [Anweisung2] 2: [Anweisung3] 3: [Anweisung4] 4: [Anweisung5] 5: [Anweisung6] ... end; [/equote:1cfd604b19] Hinweise:
Beispiel: Dieses Beispiel ist die neue Version von unserem Code-Segment von oben!
Delphi-Quellcode:
[equote:1cfd604b19="Erklärung:"]Die Variable zahl vom Typ Integer hat den Wert 0-5. Je nachdem, welchen Wert sie besitzt, gibt das Programm eine entsprechende Antwort aus.
case zahl of
0: Antwort0; 1: Antwort1; 2: Antwort2; 3: Antwort3; 4: Antwort4; 5: Antwort5; end; [/equote:1cfd604b19] Was ist, wenn man eine Anweisung 5 mal wiederholen möchte? So ist es umständlich:
Delphi-Quellcode:
Einfacher geht es mit der
Anweisung;
Anweisung; Anweisung; Anweisung; Anweisung; Die for-do-Schleife Diese Schleife wiederholt etwas, bis ein ordinaler Typ (Erklärung siehe Oben) einen Zielwert erreicht hat. Es wird zunächst ein Startwert definiert, von dem die Schleife hoch oder herunter zählt. Ist der Zielwert erreicht, wird die Schleife abgebrochen. Syntax:
Code:
[equote:1cfd604b19="Deutsch:"]Zähle von einem Startwert zu einem Zielwert herauf / herunter. Solange der Aktuelle Wert der Zählervariable unter oder auf dem Zielwert liegt, führe den Anweisungsblock aus.
for [Variable] := [Startwert] to [Zielwert] do
[Anweisung] [/equote:1cfd604b19] Beispiel: Das ist die neue Version unserem Code-Segment oben!
Delphi-Quellcode:
[equote:1cfd604b19="Erklärung:"]Die Anweisung 'Anweisung' wird fünf mal ausgeführt.
for i:=0 to 4 do
Anweisung; [/equote:1cfd604b19] Noch ein Vorteil dieser Schleife: Man erzeugt eine StringList und möchte so etwas hineinschreiben:
Code:
Muss man es ja jedes mal so machen, oder?
1
2 3 4 5
Delphi-Quellcode:
Nein! Mann kann da auch die For-Schleife verwenden:
StringList.Add('1');
StringList.Add('2'); StringList.Add('3'); StringList.Add('4'); StringList.Add('5'); Beispiel Das ist die neue Version unseres Codes oben!
Delphi-Quellcode:
[equote:1cfd604b19="Erklärung:"]Die Anweisung wird fünf mal ausgeführt. Zusätzlich wird in der Anweisung die Zählervariable 'i' verwendet
for i := 1 to 5 do
StringList.Add(IntToStr(i)); [/equote:1cfd604b19] Na, ist doch viel einfacher! Du siehst, dass man nicht zwangsläufig als Startwert die 0 haben muss, es geht mit allen Werten. Hinweis: Die Zähler-Variable muss natürlich deklariert und ein ordinaler Typ sein! Tipp: Wenn du herunter zählen möchtest, ersetze einfach das 'to' zwischen dem Start- und Zielwert durch ein 'downto' Die repeat-until-Schleife Diese Schleife wiederholt etwas, bis eine Bedingung erfüllt ist. Der Anweisungsblock wird mindestens einmal ausgeführt, da die Bedingung erst am Ende geprüft wird. Ist die Bedingung dann nicht wahr, wird der Anweisungsblock wiederholt: Syntax:
Code:
[equote:1cfd604b19="Deutsch:"]Wiederhole einen Anweisungsblock solange, bis eine Bedingung erfüllt ist
repeat
[Anweisungen] until [Bedingung] [/equote:1cfd604b19] Beispiel: Dieser Code hat den selben Effekt wie das zweite Beispiel aus der For-Do-Schleife!
Delphi-Quellcode:
[equote:1cfd604b19="Erklärung:"]Der Anweisungsblock wird fünf mal ausgeführt. Im Anweisungsblock wird zuerst die Variable 'i' Inkrementiert (hochgezählt) und dann den Wert der Variable 'i' in die StringList geschrieben.
i := 0;
repeat inc(i); StringList.Add(IntToStr(i)); until i > 4; [/equote:1cfd604b19] Hinweise:
Die while-do-Schleife Diese Schleife ist eigentlich im Grunde das gleiche wie die repeat-until-Schleife. Allerdings wird diese Schleife nur Ausgeführt, wenn die Bedingung wahr ist: Syntax:
Code:
[equote:1cfd604b19="Deutsch:"]Solange die Bedingung erfüllt ist, führe die Anweisungen aus
while [Bedingung] do
[Anweisungen] [/equote:1cfd604b19] Beispiel: Wieder mit dem selben Ergebnis!
Delphi-Quellcode:
[equote:1cfd604b19="Erklärung:"]Die Schleife wird fünf mal durchlaufen. Im Anweisungsblock wird zunächst die Variable 'i' hochgezählt, dann den Wert in eine StringList geschrieben.
i := 0;
while i < 5 do begin inc(i); StringList.Add(IntToStr(i)); end; [/equote:1cfd604b19] Hinweis: Hier brauchst du wieder, bei mehreren Anweisungen, ein begin & end! Wichtiger Hinweis zu der Repeat-Until-Schleife und der While-Do-Schleife! In dieses Schleifen gibt es keine feste Zählervariable, d.h. du müsst selber dafür sorgen, dass die Erfüllung der Bedingung möglich ist! Tust du das nicht, gelangst du in eine Endlos-Schleife! Viel Spaß und gutes Gelingen wünscht Dennis
Ground Zero is nichts gegen mein Schreibtisch.
|
|
#11
Kann mir mal bitte jemand helfen .. ich soll eine Wurzelberechnung nach Heron Algorhytmus für meinen Info Kurs schreiben aber das Programm funktioniert nicht... es hengt sich immer auf:
procedure TForm1.Button1Click(Sender: TObject); var w,a,b,F,x,y: Real; begin memo1.Clear; w:=strtofloat(edit1.text); F:=w; b:=w; a:=1; Repeat begin memo1.Lines.Add(floattostr(x)); x:=(a+b)/2; y:=F/x; a:=x; b:=y; end; until x=y; end; end. Könnte es sich bitte mal jemand angucken und sagen was ich falsch gemacht habe... m.f.G Esther ![]() |
![]() |
FreePascal / Lazarus |
#12
Mach bitte einen eigenen Thread auf, hier geht es um DenSchubs Tutorial.
|
![]() |
Ansicht |
![]() |
![]() |
![]() |
ForumregelnEs ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus. Trackbacks are an
Pingbacks are an
Refbacks are aus
|
|
Nützliche Links |
Heutige Beiträge |
Sitemap |
Suchen |
Code-Library |
Wer ist online |
Alle Foren als gelesen markieren |
Gehe zu... |
LinkBack |
![]() |
![]() |